﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Cotizav.LogicaNegocio
{
    public class ProvinciaBLL
    {
        public List<Entidades.Provincia> Listar()
        {
            AccesoDatos.ProvinciaDAO provinciaDAO = new AccesoDatos.ProvinciaDAO();

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                return provinciaDAO.Listar(ctx);
            }
        }

        public int Guardar(Entidades.Provincia newProvincia)
        {
            if (string.IsNullOrWhiteSpace(newProvincia.NombreProvincia))
            {
                throw new ApplicationException("El Nombre de la provincia se encuentra vacío");
            }

            AccesoDatos.ProvinciaDAO provinciaDAO = new AccesoDatos.ProvinciaDAO();
            int resultado = 0;

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                ctx.LoadTransaction();
                resultado = provinciaDAO.Registrar(ctx, newProvincia);
                ctx.ConfirmarTx();
            }

            return resultado;
        }

        public int Eliminar(Entidades.Provincia selProvincia)
        {
            int resultado = 0;
            LogicaNegocio.DistritoBLL distritoBLL = new LogicaNegocio.DistritoBLL();
            AccesoDatos.ProvinciaDAO provinciaDAO = new AccesoDatos.ProvinciaDAO();

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                ctx.LoadTransaction();
                resultado = distritoBLL.Eliminar(selProvincia);

                if (resultado > 0)
                    resultado += provinciaDAO.Eliminar(ctx, selProvincia);

                ctx.ConfirmarTx();
            }

            return resultado;
        }

        public int Actualizar(Entidades.Provincia updProvincia)
        {
            if (string.IsNullOrWhiteSpace(updProvincia.NombreProvincia))
            {
                throw new ApplicationException("El nombre de la provincia se encuentra vacío");
            }

            AccesoDatos.ProvinciaDAO provinciaDAO = new AccesoDatos.ProvinciaDAO();
            int resultado = 0;

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                ctx.LoadTransaction();
                resultado = provinciaDAO.Actualizar(ctx, updProvincia);
                ctx.ConfirmarTx();
            }

            return resultado;
        }
    }
}
